package com.yunke.dto.dazi;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.*;
import java.util.List;

/**
 * 云科发布搭子DTO
 * 
 * @author yunke
 * @since 2024-01-01
 */
@Data
@Schema(description = "发布搭子参数")
public class YunkeDaziCreateDto {

    /**
     * 分类ID
     */
    @NotNull(message = "分类ID不能为空")
    @Schema(description = "分类ID", example = "1")
    private Long tabClassId;

    /**
     * 标题
     */
    @NotBlank(message = "标题不能为空")
    @Size(max = 100, message = "标题长度不能超过100个字符")
    @Schema(description = "搭子标题", example = "周末爬山健身")
    private String title;

    /**
     * 内容描述
     */
    @NotBlank(message = "内容描述不能为空")
    @Size(max = 2000, message = "内容描述不能超过2000个字符")
    @Schema(description = "搭子内容描述")
    private String content;

    /**
     * 图片列表
     */
    @Schema(description = "图片URL列表")
    private List<String> images;

    /**
     * 活动地点
     */
    @NotBlank(message = "活动地点不能为空")
    @Size(max = 100, message = "活动地点不能超过100个字符")
    @Schema(description = "活动地点", example = "北京市朝阳区")
    private String location;

    /**
     * 详细地址
     */
    @Size(max = 200, message = "详细地址不能超过200个字符")
    @Schema(description = "详细地址")
    private String address;

    /**
     * 经度
     */
    @Schema(description = "经度")
    private String longitude;

    /**
     * 纬度
     */
    @Schema(description = "纬度")
    private String latitude;

    /**
     * 需要人数
     */
    @NotNull(message = "需要人数不能为空")
    @Min(value = 1, message = "需要人数至少为1人")
    @Max(value = 100, message = "需要人数不能超过100人")
    @Schema(description = "需要人数", example = "5")
    private Integer needPeople;

    /**
     * 活动时间
     */
    @NotNull(message = "活动时间不能为空")
    @Schema(description = "活动时间戳", example = "1672531200000")
    private Long activityTime;

    /**
     * 报名截止时间
     */
    @Schema(description = "报名截止时间戳")
    private Long deadlineTime;

    /**
     * 费用说明
     */
    @Size(max = 200, message = "费用说明不能超过200个字符")
    @Schema(description = "费用说明", example = "AA制，约100元/人")
    private String costDesc;

    /**
     * 联系方式
     */
    @Size(max = 100, message = "联系方式不能超过100个字符")
    @Schema(description = "联系方式")
    private String contact;

    /**
     * 是否需要审核 0-否 1-是
     */
    @Schema(description = "是否需要审核 0-否 1-是", example = "1")
    private Integer needAudit;

    /**
     * 性别要求 0-不限 1-男 2-女
     */
    @Min(value = 0, message = "性别要求值错误")
    @Max(value = 2, message = "性别要求值错误")
    @Schema(description = "性别要求 0-不限 1-男 2-女", example = "0")
    private Integer genderLimit;

    /**
     * 年龄要求最小值
     */
    @Min(value = 0, message = "最小年龄不能小于0")
    @Max(value = 150, message = "最小年龄不能超过150")
    @Schema(description = "年龄要求最小值", example = "18")
    private Integer ageMin;

    /**
     * 年龄要求最大值
     */
    @Min(value = 0, message = "最大年龄不能小于0")
    @Max(value = 150, message = "最大年龄不能超过150")
    @Schema(description = "年龄要求最大值", example = "60")
    private Integer ageMax;
} 